var pathSum = function(root, targetSum) {
    const sum = [];
    const path = (root,ans,res) => {
        if(root==null) return [];
        ans.push(root.val)
        res+=root.val
        if(res==targetSum && root.left==null&&root.right==null) {
           sum.push(ans)
        }
         path(root.left,ans.slice(),res)
         path(root.right,ans.slice(),res)
    }
    path(root,[],0);
    return sum;
};
// var pathSum = function(root, targetSum) { // 题解
//     //递归方法
//     let respath = [],curpath = [];
//     // 1. 确定递归函数参数
//     const travelTree = function(node,count){
//         curpath.push(node.val);
//         count-=node.val;
//         if(node.left===null&&node.right===null&&count===0){
//             respath.push([...curpath]);
//         }
//         node.left&&travelTree(node.left,count);
//         node.right&&travelTree(node.right,count);
//         let cur = curpath.pop();
//         count-=cur;
//     }
//     if(root===null){
//         return respath;
//     }
//     travelTree(root,targetSum);
//     return respath;
// };